[INFO] cloning repository https://github.com/WereDiggle/rust-raytracer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/WereDiggle/rust-raytracer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FWereDiggle%2Frust-raytracer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FWereDiggle%2Frust-raytracer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a962e5ab9c1106aef40b867bce6f25aa2b0842d2
[INFO] checking WereDiggle/rust-raytracer against master#cfbc6d4cf1acbac5c025acf8ed68929caa551df3 for pr-75494-beta
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FWereDiggle%2Frust-raytracer" "/workspace/builds/worker-0/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0/source'...
[INFO] [stderr] done.
[INFO] [stderr] Checking out files:  59% (72/122)   
Checking out files:  60% (74/122)   
Checking out files:  61% (75/122)   
Checking out files:  62% (76/122)   
Checking out files:  63% (77/122)   
Checking out files:  64% (79/122)   
Checking out files:  65% (80/122)   
Checking out files:  66% (81/122)   
Checking out files:  67% (82/122)   
Checking out files:  68% (83/122)   
Checking out files:  69% (85/122)   
Checking out files:  70% (86/122)   
Checking out files:  71% (87/122)   
Checking out files:  72% (88/122)   
Checking out files:  73% (90/122)   
Checking out files:  74% (91/122)   
Checking out files:  75% (92/122)   
Checking out files:  76% (93/122)   
Checking out files:  77% (94/122)   
Checking out files:  78% (96/122)   
Checking out files:  79% (97/122)   
Checking out files:  80% (98/122)   
Checking out files:  81% (99/122)   
Checking out files:  82% (101/122)   
Checking out files:  83% (102/122)   
Checking out files:  84% (103/122)   
Checking out files:  85% (104/122)   
Checking out files:  86% (105/122)   
Checking out files:  87% (107/122)   
Checking out files:  88% (108/122)   
Checking out files:  89% (109/122)   
Checking out files:  90% (110/122)   
Checking out files:  91% (112/122)   
Checking out files:  92% (113/122)   
Checking out files:  93% (114/122)   
Checking out files:  94% (115/122)   
Checking out files:  95% (116/122)   
Checking out files:  96% (118/122)   
Checking out files:  97% (119/122)   
Checking out files:  98% (120/122)   
Checking out files:  99% (121/122)   
Checking out files: 100% (122/122)   
Checking out files: 100% (122/122), done.
[INFO] validating manifest of git repo https://github.com/WereDiggle/rust-raytracer on toolchain cfbc6d4cf1acbac5c025acf8ed68929caa551df3
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+cfbc6d4cf1acbac5c025acf8ed68929caa551df3" "read-manifest" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/WereDiggle/rust-raytracer
[INFO] finished tweaking git repo https://github.com/WereDiggle/rust-raytracer
[INFO] tweaked toml for git repo https://github.com/WereDiggle/rust-raytracer written to /workspace/builds/worker-0/source/Cargo.toml
[INFO] crate git repo https://github.com/WereDiggle/rust-raytracer already has a lockfile, it will not be regenerated
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+cfbc6d4cf1acbac5c025acf8ed68929caa551df3" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded snowflake v1.3.0
[INFO] [stderr]   Downloaded inflate v0.4.4
[INFO] [stderr]   Downloaded mint v0.5.1
[INFO] [stderr]   Downloaded proc-macro2 v0.4.26
[INFO] [stderr]   Downloaded num-derive v0.2.3
[INFO] [stderr]   Downloaded tiff v0.2.1
[INFO] [stderr]   Downloaded euler v0.4.0
[INFO] [stderr]   Downloaded tobj v0.1.7
[INFO] [stderr]   Downloaded rand v0.4.5
[INFO] [stderr]   Downloaded image v0.21.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:a636fd89d022f18117e1dc8fb37a0a009933cdbbe082814857f0e2024962d47c" "/opt/rustwide/cargo-home/bin/cargo" "+cfbc6d4cf1acbac5c025acf8ed68929caa551df3" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] d29534cbc5a98498ba0b958b6b2cdb1e1f76ac5dd2ec79767644d3fd0dc86ea9
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "d29534cbc5a98498ba0b958b6b2cdb1e1f76ac5dd2ec79767644d3fd0dc86ea9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d29534cbc5a98498ba0b958b6b2cdb1e1f76ac5dd2ec79767644d3fd0dc86ea9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d29534cbc5a98498ba0b958b6b2cdb1e1f76ac5dd2ec79767644d3fd0dc86ea9", kill_on_drop: false }`
[INFO] [stdout] d29534cbc5a98498ba0b958b6b2cdb1e1f76ac5dd2ec79767644d3fd0dc86ea9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:a636fd89d022f18117e1dc8fb37a0a009933cdbbe082814857f0e2024962d47c" "/opt/rustwide/cargo-home/bin/cargo" "+cfbc6d4cf1acbac5c025acf8ed68929caa551df3" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 680211ee295c41508cba20f9b5129ed47ffccc0c1ba39c92278a3f05c9cfbe7c
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "680211ee295c41508cba20f9b5129ed47ffccc0c1ba39c92278a3f05c9cfbe7c", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.48
[INFO] [stderr]    Compiling proc-macro2 v0.4.26
[INFO] [stderr]    Compiling num-rational v0.2.1
[INFO] [stderr]    Compiling cgmath v0.16.1
[INFO] [stderr]     Checking tobj v0.1.7
[INFO] [stderr]     Checking crossbeam-utils v0.2.2
[INFO] [stderr]     Checking num-integer v0.1.39
[INFO] [stderr]     Checking crossbeam-epoch v0.3.1
[INFO] [stderr]     Checking num-iter v0.1.37
[INFO] [stderr]     Checking png v0.14.0
[INFO] [stderr]     Checking crossbeam-deque v0.2.0
[INFO] [stderr]     Checking num_cpus v1.9.0
[INFO] [stderr]     Checking rand v0.4.5
[INFO] [stderr]     Checking rand v0.5.6
[INFO] [stderr]    Compiling quote v0.6.11
[INFO] [stderr]     Checking rayon-core v1.4.1
[INFO] [stderr]    Compiling syn v0.15.26
[INFO] [stderr]     Checking rayon v1.0.3
[INFO] [stderr]     Checking jpeg-decoder v0.1.15
[INFO] [stderr]    Compiling num-derive v0.2.3
[INFO] [stderr]     Checking euler v0.4.0
[INFO] [stderr]     Checking tiff v0.2.1
[INFO] [stderr]     Checking image v0.21.1
[INFO] [stderr]     Checking raytracer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `ImageBuffer`, `RgbImage`
[INFO] [stdout]  --> src/scene.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use image::{RgbImage, ImageBuffer};
[INFO] [stdout]   |             ^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/scene.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene.rs:17:16
[INFO] [stdout]    |
[INFO] [stdout] 17 |     image: Box<TextureMappable + Send + Sync>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn TextureMappable + Send + Sync`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene.rs:48:19
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub root: Box<Traceable + Send + Sync>,
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene.rs:49:25
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub lights: Vec<Box<Lightable + Send + Sync>>,
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Lightable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene.rs:87:44
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn add_light(&mut self, light: Box<Lightable + Send + Sync>) {
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Lightable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:111:40
[INFO] [stdout]     |
[INFO] [stdout] 111 |     fn add_child(&mut self, child: Box<Traceable + Send + Sync>);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:112:50
[INFO] [stdout]     |
[INFO] [stdout] 112 |     fn add_children(&mut self, children: Vec<Box<Traceable + Send + Sync>>) {
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:123:32
[INFO] [stdout]     |
[INFO] [stdout] 123 |     fn clone_box(&self) -> Box<Traceable + Send + Sync>;
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:130:32
[INFO] [stdout]     |
[INFO] [stdout] 130 |     fn clone_box(&self) -> Box<Traceable + Send + Sync> {
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:135:20
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl Clone for Box<Traceable + Send + Sync> {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:136:28
[INFO] [stdout]     |
[INFO] [stdout] 136 |     fn clone(&self) -> Box<Traceable + Send + Sync> {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:144:27
[INFO] [stdout]     |
[INFO] [stdout] 144 |     primitive: Option<Box<Intersectable + Send + Sync>>,
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:145:19
[INFO] [stdout]     |
[INFO] [stdout] 145 |     material: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:147:23
[INFO] [stdout]     |
[INFO] [stdout] 147 |     children: Vec<Box<Traceable + Send + Sync>>,
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:163:52
[INFO] [stdout]     |
[INFO] [stdout] 163 |     pub fn set_primitive(&mut self, primitive: Box<Intersectable + Send + Sync>) {
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:167:50
[INFO] [stdout]     |
[INFO] [stdout] 167 |     pub fn set_material(&mut self, material: Box<Shadable + Send + Sync>) {
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:192:40
[INFO] [stdout]     |
[INFO] [stdout] 192 |     fn add_child(&mut self, child: Box<Traceable + Send + Sync>) {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f64::EPSILON as e`
[INFO] [stdout]   --> src/geometry/surface_coord.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 |         use std::f64::EPSILON as e;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/intersect.rs:73:22
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub shader: &'a (Shadable + Send + Sync + 'a),
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync + 'a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/intersect.rs:78:54
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn new(hit_id: ProcessUniqueId, shader: &'a (Shadable + Send + Sync + 'a), intersect: Intersect) -> NodeIntersect<'a> {
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync + 'a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:33:32
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn clone_box(&self) -> Box<Intersectable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 |     fn clone_box(&self) -> Box<Intersectable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:45:20
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl Clone for Box<Intersectable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:46:28
[INFO] [stdout]    |
[INFO] [stdout] 46 |     fn clone(&self) -> Box<Intersectable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:65:32
[INFO] [stdout]    |
[INFO] [stdout] 65 |     fn clone_box(&self) -> Box<Transformable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Transformable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:72:32
[INFO] [stdout]    |
[INFO] [stdout] 72 |     fn clone_box(&self) -> Box<Transformable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Transformable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:77:20
[INFO] [stdout]    |
[INFO] [stdout] 77 | impl Clone for Box<Transformable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Transformable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:78:28
[INFO] [stdout]    |
[INFO] [stdout] 78 |     fn clone(&self) -> Box<Transformable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Transformable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ray`
[INFO] [stdout]  --> src/shader.rs:5:27
[INFO] [stdout]   |
[INFO] [stdout] 5 | use geometry::{Intersect, Ray};
[INFO] [stdout]   |                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/shader.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `snowflake::ProcessUniqueId`
[INFO] [stdout]  --> src/shader.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use snowflake::ProcessUniqueId;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/shader/texture.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 |     texture: Box<TextureMappable + Send + Sync>,
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn TextureMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/shader/texture.rs:9:29
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub fn new(texture: Box<TextureMappable + Send + Sync>) -> Box<TextureShader> {
[INFO] [stdout]   |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn TextureMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `geometry::Ray`
[INFO] [stdout]  --> src/shader/translucent.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use geometry::Ray;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `euler::DVec3`
[INFO] [stdout]  --> src/shader/translucent.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use euler::DVec3;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:33:32
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn clone_box(&self) -> Box<Shadable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 |     fn clone_box(&self) -> Box<Shadable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:45:20
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl Clone for Box<Shadable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:46:28
[INFO] [stdout]    |
[INFO] [stdout] 46 |     fn clone(&self) -> Box<Shadable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:53:22
[INFO] [stdout]    |
[INFO] [stdout] 53 |     shaders: Vec<Box<Shadable + Send + Sync>>,
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:57:42
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn from_shaders(shaders: Vec<Box<Shadable + Send + Sync>>) -> Box<MixShader> {
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:61:46
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn add_shader(&mut self, shader: Box<Shadable + Send + Sync>) {
[INFO] [stdout]    |                                              ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:78:28
[INFO] [stdout]    |
[INFO] [stdout] 78 |     shaders: Vec<(f64, Box<Shadable + Send + Sync>)>,
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:86:59
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn add_shader(&mut self, weight: f64, shader: Box<Shadable + Send + Sync>) {
[INFO] [stdout]    |                                                           ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:90:48
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub fn from_shaders(shaders: Vec<(f64, Box<Shadable + Send + Sync>)>) -> Box<CompositeShader> {
[INFO] [stdout]    |                                                ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:115:22
[INFO] [stdout]     |
[INFO] [stdout] 115 |     shaders: Vec<Box<Shadable + Send + Sync>>,
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:125:42
[INFO] [stdout]     |
[INFO] [stdout] 125 |     pub fn from_shaders(shaders: Vec<Box<Shadable + Send + Sync>>) -> Box<ChainShader> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:129:47
[INFO] [stdout]     |
[INFO] [stdout] 129 |     pub fn push_shader(&mut self, shader: Box<Shadable + Send + Sync>) {
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:157:21
[INFO] [stdout]     |
[INFO] [stdout] 157 |     normal_map: Box<NormalMappable + Send + Sync>,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:161:32
[INFO] [stdout]     |
[INFO] [stdout] 161 |     pub fn new(normal_map: Box<NormalMappable + Send + Sync>) -> Box<NormalMapShader> {
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/primitive.rs:21:20
[INFO] [stdout]    |
[INFO] [stdout] 21 |     primitive: Box<Intersectable + Send + Sync>,
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/primitive.rs:25:31
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn new(primitive: Box<Intersectable + Send + Sync>) -> OneWay {
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/primitive.rs:50:20
[INFO] [stdout]    |
[INFO] [stdout] 50 |     primitive: Box<Intersectable + Send + Sync>,
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/primitive.rs:54:31
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub fn new(primitive: Box<Intersectable + Send + Sync>) -> Inverted {
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/light.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light.rs:47:32
[INFO] [stdout]    |
[INFO] [stdout] 47 |     fn clone_box(&self) -> Box<Lightable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Lightable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light.rs:54:32
[INFO] [stdout]    |
[INFO] [stdout] 54 |     fn clone_box(&self) -> Box<Lightable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Lightable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light.rs:59:20
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl Clone for Box<Lightable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Lightable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light.rs:60:28
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn clone(&self) -> Box<Lightable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Lightable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/multithread.rs:19:16
[INFO] [stdout]    |
[INFO] [stdout] 19 | type Job = Box<FnBox + Send>;
[INFO] [stdout]    |                ^^^^^^^^^^^^ help: use `dyn`: `dyn FnBox + Send`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `light::*`
[INFO] [stdout]  --> src/render.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use light::*;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/base_shape.rs:6:20
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primitive: Box<Intersectable + Send + Sync>,
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/base_shape.rs:10:46
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub fn new(matrix: DMat4, primitive: Box<Intersectable + Send + Sync>) -> BaseShape {
[INFO] [stdout]    |                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/base_shape.rs:19:35
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/subtract_shape.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 |     positive: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/subtract_shape.rs:7:19
[INFO] [stdout]   |
[INFO] [stdout] 7 |     negative: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/subtract_shape.rs:11:30
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(positive: Box<Compositable + Send + Sync>, negative: Box<Compositable + Send + Sync>) -> SubtractShape {
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/subtract_shape.rs:11:73
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(positive: Box<Compositable + Send + Sync>, negative: Box<Compositable + Send + Sync>) -> SubtractShape {
[INFO] [stdout]    |                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/subtract_shape.rs:21:35
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/or_shape.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/or_shape.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 |     secondary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/or_shape.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> OrShape {
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/or_shape.rs:11:73
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> OrShape {
[INFO] [stdout]    |                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/or_shape.rs:51:35
[INFO] [stdout]    |
[INFO] [stdout] 51 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/xor_shape.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/xor_shape.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 |     secondary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/xor_shape.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> XorShape {
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/xor_shape.rs:11:73
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> XorShape {
[INFO] [stdout]    |                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/xor_shape.rs:58:35
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/and_shape.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/and_shape.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 |     secondary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> AndShape {
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:11:73
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> AndShape {
[INFO] [stdout]    |                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:47:35
[INFO] [stdout]    |
[INFO] [stdout] 47 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:70:21
[INFO] [stdout]    |
[INFO] [stdout] 70 |     shapes: Vec<Box<Compositable + Send + Sync>>,
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:74:37
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn from_vec(shapes: Vec<Box<Compositable + Send + Sync>>) -> MultiAndShape {
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:83:35
[INFO] [stdout]    |
[INFO] [stdout] 83 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape.rs:75:33
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn calculate_intersects(comp: &(Compositable + Send + Sync), ray: Ray, check_get: &mut FnMut(usize, &Vec<bool>, Intersect) -> Control) 
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape.rs:75:88
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn calculate_intersects(comp: &(Compositable + Send + Sync), ray: Ray, check_get: &mut FnMut(usize, &Vec<bool>, Intersect) -> Control) 
[INFO] [stdout]    |                                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut(usize, &Vec<bool>, Intersect) -> Control`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:126:35
[INFO] [stdout]     |
[INFO] [stdout] 126 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)>;
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:132:45
[INFO] [stdout]     |
[INFO] [stdout] 132 |     fn clone_compositable_box(&self) -> Box<Compositable + Send + Sync>;
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:139:45
[INFO] [stdout]     |
[INFO] [stdout] 139 |     fn clone_compositable_box(&self) -> Box<Compositable + Send + Sync> {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:144:20
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl Clone for Box<Compositable + Send + Sync> {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:145:28
[INFO] [stdout]     |
[INFO] [stdout] 145 |     fn clone(&self) -> Box<Compositable + Send + Sync> {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:35:36
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn build_scene(lights: Vec<Box<Lightable + Send + Sync>>, 
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Lightable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:38:30
[INFO] [stdout]    |
[INFO] [stdout] 38 |                    root: Box<Traceable + Send + Sync>) -> Scene {
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:58:33
[INFO] [stdout]    |
[INFO] [stdout] 58 |                   material: Box<Shadable + Send + Sync>,
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:59:34
[INFO] [stdout]    |
[INFO] [stdout] 59 |                   primitive: Box<Intersectable + Send + Sync>,
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:60:37
[INFO] [stdout]    |
[INFO] [stdout] 60 |                   children: Vec<Box<Traceable + Send + Sync>>) -> Box<SceneNode> {
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:72:37
[INFO] [stdout]    |
[INFO] [stdout] 72 |                   children: Vec<Box<Traceable + Send + Sync>>) -> Box<SceneNode> {
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:101:59
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn create_wall_from_material(size: f64, material: Box<Shadable + Send + Sync>, transform: DMat4) -> SceneNode {
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:128:60
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub fn create_floor_from_material(size: f64, material: Box<Shadable + Send + Sync>) -> Box<SceneNode> {
[INFO] [stdout]     |                                                            ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:147:22
[INFO] [stdout]     |
[INFO] [stdout] 147 |     pub ceiling: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:148:20
[INFO] [stdout]     |
[INFO] [stdout] 148 |     pub floor: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:149:20
[INFO] [stdout]     |
[INFO] [stdout] 149 |     pub front: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:150:19
[INFO] [stdout]     |
[INFO] [stdout] 150 |     pub back: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:151:19
[INFO] [stdout]     |
[INFO] [stdout] 151 |     pub left: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:152:20
[INFO] [stdout]     |
[INFO] [stdout] 152 |     pub right: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:299:55
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub fn subtract_shape(transform: DMat4, positive: Box<Compositable + Send + Sync>, negative: Box<Compositable + Send + Sync>) -> Box<Subt...
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:299:98
[INFO] [stdout]     |
[INFO] [stdout] 299 | ... Send + Sync>, negative: Box<Compositable + Send + Sync>) -> Box<SubtractShape> {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:305:48
[INFO] [stdout]     |
[INFO] [stdout] 305 | pub fn or_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<OrShape> {
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:305:92
[INFO] [stdout]     |
[INFO] [stdout] 305 | pub fn or_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<OrShape> {
[INFO] [stdout]     |                                                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:311:49
[INFO] [stdout]     |
[INFO] [stdout] 311 | pub fn xor_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<XorShape> {
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:311:93
[INFO] [stdout]     |
[INFO] [stdout] 311 | pub fn xor_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<XorShape> {
[INFO] [stdout]     |                                                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:317:49
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub fn and_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<AndShape> {
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:317:93
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub fn and_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<AndShape> {
[INFO] [stdout]     |                                                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:325:26
[INFO] [stdout]     |
[INFO] [stdout] 325 |     let spheres: Vec<Box<Compositable + Send + Sync>> = vec!(
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:351:52
[INFO] [stdout]     |
[INFO] [stdout] 351 | pub fn base_shape(transform: DMat4, primitive: Box<Intersectable + Send + Sync>) -> Box<BaseShape> {
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:11:32
[INFO] [stdout]    |
[INFO] [stdout] 11 |     fn clone_box(&self) -> Box<TextureMappable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn TextureMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:18:32
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn clone_box(&self) -> Box<TextureMappable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn TextureMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:23:20
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl Clone for Box<TextureMappable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn TextureMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:24:28
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn clone(&self) -> Box<TextureMappable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn TextureMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `color::Color`
[INFO] [stdout]  --> src/normal_map.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use color::Color;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/normal_map.rs:16:32
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn clone_box(&self) -> Box<NormalMappable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/normal_map.rs:23:32
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn clone_box(&self) -> Box<NormalMappable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/normal_map.rs:28:20
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl Clone for Box<NormalMappable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/normal_map.rs:29:28
[INFO] [stdout]    |
[INFO] [stdout] 29 |     fn clone(&self) -> Box<NormalMappable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::RgbImage`
[INFO] [stdout]  --> src/asset_manager.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use image::RgbImage;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/asset_manager.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:16:41
[INFO] [stdout]    |
[INFO] [stdout] 16 |     texture_cache: HashMap<&'a str, Box<TextureMappable + Send + Sync>>,
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn TextureMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:17:44
[INFO] [stdout]    |
[INFO] [stdout] 17 |     normal_map_cache: HashMap<&'a str, Box<NormalMappable + Send + Sync>>,
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:29:69
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub fn image_texture_from_path(&mut self, path: &'a str) -> Box<TextureMappable + Send + Sync> {
[INFO] [stdout]    |                                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn TextureMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:41:76
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn bump_map_from_path(&mut self, path: &'a str, depth: f64) -> Box<NormalMappable + Send + Sync> {
[INFO] [stdout]    |                                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:51:66
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub fn normal_map_from_path(&mut self, path: &'a str) -> Box<NormalMappable> {
[INFO] [stdout]    |                                                                  ^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `primitive::plane::Triangle`
[INFO] [stdout]  --> src/mesh.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use primitive::plane::Triangle;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/mesh.rs:176:9
[INFO] [stdout]     |
[INFO] [stdout] 176 |           ///println!("BoundingNode check_intersect hit_point: {}", hit_point);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 177 | 
[INFO] [stdout] 178 | /         match self {
[INFO] [stdout] 179 | |             BoundingNode::Interior{axis, split, child} => {
[INFO] [stdout] 180 | |                 //println!("BoundingNode check_intersect interior node: split: {}", split);
[INFO] [stdout] 181 | |                 // First check if the ray intersects with this node at all
[INFO] [stdout] ...   |
[INFO] [stdout] 277 | |             },
[INFO] [stdout] 278 | |         }
[INFO] [stdout]     | |_________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ImageBuffer`, `RgbImage`
[INFO] [stdout]  --> src/scene.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use image::{RgbImage, ImageBuffer};
[INFO] [stdout]   |             ^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/scene.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene.rs:17:16
[INFO] [stdout]    |
[INFO] [stdout] 17 |     image: Box<TextureMappable + Send + Sync>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn TextureMappable + Send + Sync`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene.rs:48:19
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub root: Box<Traceable + Send + Sync>,
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene.rs:49:25
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub lights: Vec<Box<Lightable + Send + Sync>>,
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Lightable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene.rs:87:44
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn add_light(&mut self, light: Box<Lightable + Send + Sync>) {
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Lightable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:111:40
[INFO] [stdout]     |
[INFO] [stdout] 111 |     fn add_child(&mut self, child: Box<Traceable + Send + Sync>);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:112:50
[INFO] [stdout]     |
[INFO] [stdout] 112 |     fn add_children(&mut self, children: Vec<Box<Traceable + Send + Sync>>) {
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:123:32
[INFO] [stdout]     |
[INFO] [stdout] 123 |     fn clone_box(&self) -> Box<Traceable + Send + Sync>;
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:130:32
[INFO] [stdout]     |
[INFO] [stdout] 130 |     fn clone_box(&self) -> Box<Traceable + Send + Sync> {
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:135:20
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl Clone for Box<Traceable + Send + Sync> {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:136:28
[INFO] [stdout]     |
[INFO] [stdout] 136 |     fn clone(&self) -> Box<Traceable + Send + Sync> {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:144:27
[INFO] [stdout]     |
[INFO] [stdout] 144 |     primitive: Option<Box<Intersectable + Send + Sync>>,
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:145:19
[INFO] [stdout]     |
[INFO] [stdout] 145 |     material: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:147:23
[INFO] [stdout]     |
[INFO] [stdout] 147 |     children: Vec<Box<Traceable + Send + Sync>>,
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:163:52
[INFO] [stdout]     |
[INFO] [stdout] 163 |     pub fn set_primitive(&mut self, primitive: Box<Intersectable + Send + Sync>) {
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:167:50
[INFO] [stdout]     |
[INFO] [stdout] 167 |     pub fn set_material(&mut self, material: Box<Shadable + Send + Sync>) {
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:192:40
[INFO] [stdout]     |
[INFO] [stdout] 192 |     fn add_child(&mut self, child: Box<Traceable + Send + Sync>) {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f64::EPSILON as e`
[INFO] [stdout]   --> src/geometry/surface_coord.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 |         use std::f64::EPSILON as e;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/intersect.rs:73:22
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub shader: &'a (Shadable + Send + Sync + 'a),
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync + 'a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/intersect.rs:78:54
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn new(hit_id: ProcessUniqueId, shader: &'a (Shadable + Send + Sync + 'a), intersect: Intersect) -> NodeIntersect<'a> {
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync + 'a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:33:32
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn clone_box(&self) -> Box<Intersectable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 |     fn clone_box(&self) -> Box<Intersectable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:45:20
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl Clone for Box<Intersectable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:46:28
[INFO] [stdout]    |
[INFO] [stdout] 46 |     fn clone(&self) -> Box<Intersectable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:65:32
[INFO] [stdout]    |
[INFO] [stdout] 65 |     fn clone_box(&self) -> Box<Transformable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Transformable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:72:32
[INFO] [stdout]    |
[INFO] [stdout] 72 |     fn clone_box(&self) -> Box<Transformable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Transformable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:77:20
[INFO] [stdout]    |
[INFO] [stdout] 77 | impl Clone for Box<Transformable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Transformable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:78:28
[INFO] [stdout]    |
[INFO] [stdout] 78 |     fn clone(&self) -> Box<Transformable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Transformable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ray`
[INFO] [stdout]  --> src/shader.rs:5:27
[INFO] [stdout]   |
[INFO] [stdout] 5 | use geometry::{Intersect, Ray};
[INFO] [stdout]   |                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/shader.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `snowflake::ProcessUniqueId`
[INFO] [stdout]  --> src/shader.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use snowflake::ProcessUniqueId;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/shader/texture.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 |     texture: Box<TextureMappable + Send + Sync>,
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn TextureMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/shader/texture.rs:9:29
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub fn new(texture: Box<TextureMappable + Send + Sync>) -> Box<TextureShader> {
[INFO] [stdout]   |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn TextureMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `geometry::Ray`
[INFO] [stdout]  --> src/shader/translucent.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use geometry::Ray;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `euler::DVec3`
[INFO] [stdout]  --> src/shader/translucent.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use euler::DVec3;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:33:32
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn clone_box(&self) -> Box<Shadable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 |     fn clone_box(&self) -> Box<Shadable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:45:20
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl Clone for Box<Shadable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:46:28
[INFO] [stdout]    |
[INFO] [stdout] 46 |     fn clone(&self) -> Box<Shadable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:53:22
[INFO] [stdout]    |
[INFO] [stdout] 53 |     shaders: Vec<Box<Shadable + Send + Sync>>,
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:57:42
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn from_shaders(shaders: Vec<Box<Shadable + Send + Sync>>) -> Box<MixShader> {
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:61:46
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn add_shader(&mut self, shader: Box<Shadable + Send + Sync>) {
[INFO] [stdout]    |                                              ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:78:28
[INFO] [stdout]    |
[INFO] [stdout] 78 |     shaders: Vec<(f64, Box<Shadable + Send + Sync>)>,
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:86:59
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn add_shader(&mut self, weight: f64, shader: Box<Shadable + Send + Sync>) {
[INFO] [stdout]    |                                                           ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:90:48
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub fn from_shaders(shaders: Vec<(f64, Box<Shadable + Send + Sync>)>) -> Box<CompositeShader> {
[INFO] [stdout]    |                                                ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:115:22
[INFO] [stdout]     |
[INFO] [stdout] 115 |     shaders: Vec<Box<Shadable + Send + Sync>>,
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:125:42
[INFO] [stdout]     |
[INFO] [stdout] 125 |     pub fn from_shaders(shaders: Vec<Box<Shadable + Send + Sync>>) -> Box<ChainShader> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:129:47
[INFO] [stdout]     |
[INFO] [stdout] 129 |     pub fn push_shader(&mut self, shader: Box<Shadable + Send + Sync>) {
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:157:21
[INFO] [stdout]     |
[INFO] [stdout] 157 |     normal_map: Box<NormalMappable + Send + Sync>,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:161:32
[INFO] [stdout]     |
[INFO] [stdout] 161 |     pub fn new(normal_map: Box<NormalMappable + Send + Sync>) -> Box<NormalMapShader> {
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/primitive.rs:21:20
[INFO] [stdout]    |
[INFO] [stdout] 21 |     primitive: Box<Intersectable + Send + Sync>,
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/primitive.rs:25:31
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn new(primitive: Box<Intersectable + Send + Sync>) -> OneWay {
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/primitive.rs:50:20
[INFO] [stdout]    |
[INFO] [stdout] 50 |     primitive: Box<Intersectable + Send + Sync>,
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/primitive.rs:54:31
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub fn new(primitive: Box<Intersectable + Send + Sync>) -> Inverted {
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/light.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light.rs:47:32
[INFO] [stdout]    |
[INFO] [stdout] 47 |     fn clone_box(&self) -> Box<Lightable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Lightable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light.rs:54:32
[INFO] [stdout]    |
[INFO] [stdout] 54 |     fn clone_box(&self) -> Box<Lightable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Lightable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light.rs:59:20
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl Clone for Box<Lightable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Lightable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light.rs:60:28
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn clone(&self) -> Box<Lightable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Lightable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/multithread.rs:19:16
[INFO] [stdout]    |
[INFO] [stdout] 19 | type Job = Box<FnBox + Send>;
[INFO] [stdout]    |                ^^^^^^^^^^^^ help: use `dyn`: `dyn FnBox + Send`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `light::*`
[INFO] [stdout]  --> src/render.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use light::*;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/base_shape.rs:6:20
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primitive: Box<Intersectable + Send + Sync>,
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/base_shape.rs:10:46
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub fn new(matrix: DMat4, primitive: Box<Intersectable + Send + Sync>) -> BaseShape {
[INFO] [stdout]    |                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/base_shape.rs:19:35
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/subtract_shape.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 |     positive: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/subtract_shape.rs:7:19
[INFO] [stdout]   |
[INFO] [stdout] 7 |     negative: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/subtract_shape.rs:11:30
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(positive: Box<Compositable + Send + Sync>, negative: Box<Compositable + Send + Sync>) -> SubtractShape {
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/subtract_shape.rs:11:73
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(positive: Box<Compositable + Send + Sync>, negative: Box<Compositable + Send + Sync>) -> SubtractShape {
[INFO] [stdout]    |                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/subtract_shape.rs:21:35
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/or_shape.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/or_shape.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 |     secondary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/or_shape.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> OrShape {
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/or_shape.rs:11:73
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> OrShape {
[INFO] [stdout]    |                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/or_shape.rs:51:35
[INFO] [stdout]    |
[INFO] [stdout] 51 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/xor_shape.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/xor_shape.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 |     secondary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/xor_shape.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> XorShape {
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/xor_shape.rs:11:73
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> XorShape {
[INFO] [stdout]    |                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/xor_shape.rs:58:35
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/and_shape.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/and_shape.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 |     secondary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> AndShape {
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:11:73
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> AndShape {
[INFO] [stdout]    |                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:47:35
[INFO] [stdout]    |
[INFO] [stdout] 47 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:70:21
[INFO] [stdout]    |
[INFO] [stdout] 70 |     shapes: Vec<Box<Compositable + Send + Sync>>,
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:74:37
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn from_vec(shapes: Vec<Box<Compositable + Send + Sync>>) -> MultiAndShape {
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:83:35
[INFO] [stdout]    |
[INFO] [stdout] 83 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape.rs:75:33
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn calculate_intersects(comp: &(Compositable + Send + Sync), ray: Ray, check_get: &mut FnMut(usize, &Vec<bool>, Intersect) -> Control) 
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape.rs:75:88
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn calculate_intersects(comp: &(Compositable + Send + Sync), ray: Ray, check_get: &mut FnMut(usize, &Vec<bool>, Intersect) -> Control) 
[INFO] [stdout]    |                                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut(usize, &Vec<bool>, Intersect) -> Control`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:126:35
[INFO] [stdout]     |
[INFO] [stdout] 126 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)>;
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:132:45
[INFO] [stdout]     |
[INFO] [stdout] 132 |     fn clone_compositable_box(&self) -> Box<Compositable + Send + Sync>;
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:139:45
[INFO] [stdout]     |
[INFO] [stdout] 139 |     fn clone_compositable_box(&self) -> Box<Compositable + Send + Sync> {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:144:20
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl Clone for Box<Compositable + Send + Sync> {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:145:28
[INFO] [stdout]     |
[INFO] [stdout] 145 |     fn clone(&self) -> Box<Compositable + Send + Sync> {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:35:36
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn build_scene(lights: Vec<Box<Lightable + Send + Sync>>, 
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Lightable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:38:30
[INFO] [stdout]    |
[INFO] [stdout] 38 |                    root: Box<Traceable + Send + Sync>) -> Scene {
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:58:33
[INFO] [stdout]    |
[INFO] [stdout] 58 |                   material: Box<Shadable + Send + Sync>,
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:59:34
[INFO] [stdout]    |
[INFO] [stdout] 59 |                   primitive: Box<Intersectable + Send + Sync>,
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:60:37
[INFO] [stdout]    |
[INFO] [stdout] 60 |                   children: Vec<Box<Traceable + Send + Sync>>) -> Box<SceneNode> {
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:72:37
[INFO] [stdout]    |
[INFO] [stdout] 72 |                   children: Vec<Box<Traceable + Send + Sync>>) -> Box<SceneNode> {
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Traceable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:101:59
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn create_wall_from_material(size: f64, material: Box<Shadable + Send + Sync>, transform: DMat4) -> SceneNode {
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:128:60
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub fn create_floor_from_material(size: f64, material: Box<Shadable + Send + Sync>) -> Box<SceneNode> {
[INFO] [stdout]     |                                                            ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:147:22
[INFO] [stdout]     |
[INFO] [stdout] 147 |     pub ceiling: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:148:20
[INFO] [stdout]     |
[INFO] [stdout] 148 |     pub floor: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:149:20
[INFO] [stdout]     |
[INFO] [stdout] 149 |     pub front: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:150:19
[INFO] [stdout]     |
[INFO] [stdout] 150 |     pub back: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:151:19
[INFO] [stdout]     |
[INFO] [stdout] 151 |     pub left: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:152:20
[INFO] [stdout]     |
[INFO] [stdout] 152 |     pub right: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Shadable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:299:55
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub fn subtract_shape(transform: DMat4, positive: Box<Compositable + Send + Sync>, negative: Box<Compositable + Send + Sync>) -> Box<Subt...
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:299:98
[INFO] [stdout]     |
[INFO] [stdout] 299 | ... Send + Sync>, negative: Box<Compositable + Send + Sync>) -> Box<SubtractShape> {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:305:48
[INFO] [stdout]     |
[INFO] [stdout] 305 | pub fn or_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<OrShape> {
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:305:92
[INFO] [stdout]     |
[INFO] [stdout] 305 | pub fn or_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<OrShape> {
[INFO] [stdout]     |                                                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:311:49
[INFO] [stdout]     |
[INFO] [stdout] 311 | pub fn xor_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<XorShape> {
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:311:93
[INFO] [stdout]     |
[INFO] [stdout] 311 | pub fn xor_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<XorShape> {
[INFO] [stdout]     |                                                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:317:49
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub fn and_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<AndShape> {
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:317:93
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub fn and_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<AndShape> {
[INFO] [stdout]     |                                                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:325:26
[INFO] [stdout]     |
[INFO] [stdout] 325 |     let spheres: Vec<Box<Compositable + Send + Sync>> = vec!(
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Compositable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:351:52
[INFO] [stdout]     |
[INFO] [stdout] 351 | pub fn base_shape(transform: DMat4, primitive: Box<Intersectable + Send + Sync>) -> Box<BaseShape> {
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Intersectable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:11:32
[INFO] [stdout]    |
[INFO] [stdout] 11 |     fn clone_box(&self) -> Box<TextureMappable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn TextureMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:18:32
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn clone_box(&self) -> Box<TextureMappable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn TextureMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:23:20
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl Clone for Box<TextureMappable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn TextureMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:24:28
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn clone(&self) -> Box<TextureMappable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn TextureMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `color::Color`
[INFO] [stdout]  --> src/normal_map.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use color::Color;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/normal_map.rs:16:32
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn clone_box(&self) -> Box<NormalMappable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/normal_map.rs:23:32
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn clone_box(&self) -> Box<NormalMappable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/normal_map.rs:28:20
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl Clone for Box<NormalMappable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/normal_map.rs:29:28
[INFO] [stdout]    |
[INFO] [stdout] 29 |     fn clone(&self) -> Box<NormalMappable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::RgbImage`
[INFO] [stdout]  --> src/asset_manager.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use image::RgbImage;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/asset_manager.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:16:41
[INFO] [stdout]    |
[INFO] [stdout] 16 |     texture_cache: HashMap<&'a str, Box<TextureMappable + Send + Sync>>,
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn TextureMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:17:44
[INFO] [stdout]    |
[INFO] [stdout] 17 |     normal_map_cache: HashMap<&'a str, Box<NormalMappable + Send + Sync>>,
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:29:69
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub fn image_texture_from_path(&mut self, path: &'a str) -> Box<TextureMappable + Send + Sync> {
[INFO] [stdout]    |                                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn TextureMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:41:76
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn bump_map_from_path(&mut self, path: &'a str, depth: f64) -> Box<NormalMappable + Send + Sync> {
[INFO] [stdout]    |                                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable + Send + Sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:51:66
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub fn normal_map_from_path(&mut self, path: &'a str) -> Box<NormalMappable> {
[INFO] [stdout]    |                                                                  ^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `primitive::plane::Triangle`
[INFO] [stdout]  --> src/mesh.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use primitive::plane::Triangle;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/mesh.rs:176:9
[INFO] [stdout]     |
[INFO] [stdout] 176 |           ///println!("BoundingNode check_intersect hit_point: {}", hit_point);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 177 | 
[INFO] [stdout] 178 | /         match self {
[INFO] [stdout] 179 | |             BoundingNode::Interior{axis, split, child} => {
[INFO] [stdout] 180 | |                 //println!("BoundingNode check_intersect interior node: split: {}", split);
[INFO] [stdout] 181 | |                 // First check if the ray intersects with this node at all
[INFO] [stdout] ...   |
[INFO] [stdout] 277 | |             },
[INFO] [stdout] 278 | |         }
[INFO] [stdout]     | |_________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scene`
[INFO] [stdout]    --> src/shader.rs:170:25
[INFO] [stdout]     |
[INFO] [stdout] 170 |     fn get_color(&self, scene: &Scene, intersect: Intersect) -> Color {
[INFO] [stdout]     |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_scene`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scene`
[INFO] [stdout]    --> src/shader.rs:175:32
[INFO] [stdout]     |
[INFO] [stdout] 175 |     fn modify_intersect(&self, scene: &Scene, intersect: Intersect) -> Intersect {
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_scene`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `acc`
[INFO] [stdout]    --> src/primitive/plane.rs:219:47
[INFO] [stdout]     |
[INFO] [stdout] 219 | ...                   .try_fold(true, |acc, x| 
[INFO] [stdout]     |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_acc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `depth`
[INFO] [stdout]    --> src/light.rs:189:56
[INFO] [stdout]     |
[INFO] [stdout] 189 |     fn subdivide_points(&self, min: DVec2, max: DVec2, depth: usize) -> Vec<DVec3> {
[INFO] [stdout]     |                                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_depth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/light.rs:306:13
[INFO] [stdout]     |
[INFO] [stdout] 306 |         for i in 0..num_rays {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `surface_dot`
[INFO] [stdout]    --> src/light.rs:346:31
[INFO] [stdout]     |
[INFO] [stdout] 346 |             if let Illum::Lit{surface_dot, light_direction, ref mut intensity} = x {
[INFO] [stdout]     |                               ^^^^^^^^^^^ help: try ignoring the field: `surface_dot: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `light_direction`
[INFO] [stdout]    --> src/light.rs:346:44
[INFO] [stdout]     |
[INFO] [stdout] 346 |             if let Illum::Lit{surface_dot, light_direction, ref mut intensity} = x {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^^^ help: try ignoring the field: `light_direction: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `depth`
[INFO] [stdout]    --> src/light.rs:335:13
[INFO] [stdout]     |
[INFO] [stdout] 335 |         for depth in 0..SquareLight::PROG_DEPTH {
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_depth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/light.rs:359:13
[INFO] [stdout]     |
[INFO] [stdout] 359 |         for i in 0..SquareLight::SAMPLE_RATE {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `x` is never read
[INFO] [stdout]    --> src/render.rs:316:9
[INFO] [stdout]     |
[INFO] [stdout] 316 |     let mut x = 0;
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `y` is never read
[INFO] [stdout]    --> src/render.rs:317:9
[INFO] [stdout]     |
[INFO] [stdout] 317 |     let mut y = 0;
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_err`
[INFO] [stdout]   --> src/mesh.rs:41:13
[INFO] [stdout]    |
[INFO] [stdout] 41 |         let max_err = max - err;
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `min_err`
[INFO] [stdout]   --> src/mesh.rs:42:13
[INFO] [stdout]    |
[INFO] [stdout] 42 |         let min_err = min + err;
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_min_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `prim_overlap` is assigned to, but never used
[INFO] [stdout]    --> src/mesh.rs:306:17
[INFO] [stdout]     |
[INFO] [stdout] 306 |             let mut prim_overlap = 0;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_prim_overlap` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `materials`
[INFO] [stdout]    --> src/mesh.rs:384:22
[INFO] [stdout]     |
[INFO] [stdout] 384 |         let (models, materials) = tobj::load_obj(path).unwrap();
[INFO] [stdout]     |                      ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_materials`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/scene.rs:241:25
[INFO] [stdout]     |
[INFO] [stdout] 241 |             if let Some(mut child_node_intersect) = child.partial_trace_until_distance(ray, max_distance) {
[INFO] [stdout]     |                         ----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scene`
[INFO] [stdout]    --> src/shader.rs:170:25
[INFO] [stdout]     |
[INFO] [stdout] 170 |     fn get_color(&self, scene: &Scene, intersect: Intersect) -> Color {
[INFO] [stdout]     |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_scene`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scene`
[INFO] [stdout]    --> src/shader.rs:175:32
[INFO] [stdout]     |
[INFO] [stdout] 175 |     fn modify_intersect(&self, scene: &Scene, intersect: Intersect) -> Intersect {
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_scene`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `acc`
[INFO] [stdout]    --> src/primitive/plane.rs:219:47
[INFO] [stdout]     |
[INFO] [stdout] 219 | ...                   .try_fold(true, |acc, x| 
[INFO] [stdout]     |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_acc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `depth`
[INFO] [stdout]    --> src/light.rs:189:56
[INFO] [stdout]     |
[INFO] [stdout] 189 |     fn subdivide_points(&self, min: DVec2, max: DVec2, depth: usize) -> Vec<DVec3> {
[INFO] [stdout]     |                                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_depth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/light.rs:306:13
[INFO] [stdout]     |
[INFO] [stdout] 306 |         for i in 0..num_rays {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `surface_dot`
[INFO] [stdout]    --> src/light.rs:346:31
[INFO] [stdout]     |
[INFO] [stdout] 346 |             if let Illum::Lit{surface_dot, light_direction, ref mut intensity} = x {
[INFO] [stdout]     |                               ^^^^^^^^^^^ help: try ignoring the field: `surface_dot: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `light_direction`
[INFO] [stdout]    --> src/light.rs:346:44
[INFO] [stdout]     |
[INFO] [stdout] 346 |             if let Illum::Lit{surface_dot, light_direction, ref mut intensity} = x {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^^^ help: try ignoring the field: `light_direction: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `depth`
[INFO] [stdout]    --> src/light.rs:335:13
[INFO] [stdout]     |
[INFO] [stdout] 335 |         for depth in 0..SquareLight::PROG_DEPTH {
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_depth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/light.rs:359:13
[INFO] [stdout]     |
[INFO] [stdout] 359 |         for i in 0..SquareLight::SAMPLE_RATE {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `x` is never read
[INFO] [stdout]    --> src/render.rs:316:9
[INFO] [stdout]     |
[INFO] [stdout] 316 |     let mut x = 0;
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `y` is never read
[INFO] [stdout]    --> src/render.rs:317:9
[INFO] [stdout]     |
[INFO] [stdout] 317 |     let mut y = 0;
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_err`
[INFO] [stdout]   --> src/mesh.rs:41:13
[INFO] [stdout]    |
[INFO] [stdout] 41 |         let max_err = max - err;
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `min_err`
[INFO] [stdout]   --> src/mesh.rs:42:13
[INFO] [stdout]    |
[INFO] [stdout] 42 |         let min_err = min + err;
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_min_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `prim_overlap` is assigned to, but never used
[INFO] [stdout]    --> src/mesh.rs:306:17
[INFO] [stdout]     |
[INFO] [stdout] 306 |             let mut prim_overlap = 0;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_prim_overlap` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `materials`
[INFO] [stdout]    --> src/mesh.rs:384:22
[INFO] [stdout]     |
[INFO] [stdout] 384 |         let (models, materials) = tobj::load_obj(path).unwrap();
[INFO] [stdout]     |                      ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_materials`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/scene.rs:241:25
[INFO] [stdout]     |
[INFO] [stdout] 241 |             if let Some(mut child_node_intersect) = child.partial_trace_until_distance(ray, max_distance) {
[INFO] [stdout]     |                         ----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/composite_shape.rs:92:13
[INFO] [stdout]    |
[INFO] [stdout] 92 |         let mut intersects: Vec<(usize, Hit, Intersect)> = shape_sects.into_iter().map(|x| (i, hit_direction(x), x)).collect();
[INFO] [stdout]    |             ----^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/composite_shape.rs:92:13
[INFO] [stdout]    |
[INFO] [stdout] 92 |         let mut intersects: Vec<(usize, Hit, Intersect)> = shape_sects.into_iter().map(|x| (i, hit_direction(x), x)).collect();
[INFO] [stdout]    |             ----^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/mesh.rs:436:17
[INFO] [stdout]     |
[INFO] [stdout] 436 |             let mut v = e1.cross(hit_v1);
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/mesh.rs:439:17
[INFO] [stdout]     |
[INFO] [stdout] 439 |             let mut w = e2.cross(hit_v2);
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/mesh.rs:442:17
[INFO] [stdout]     |
[INFO] [stdout] 442 |             let mut u = e3.cross(hit_v3);
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Enter`
[INFO] [stdout]   --> src/shader/phong.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     Enter,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Exit`
[INFO] [stdout]   --> src/shader/phong.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Exit,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `total_light_blocked`
[INFO] [stdout]   --> src/shader/phong.rs:23:4
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn total_light_blocked(opacity: Color, enter: f64, exit: f64) -> Color {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `AMBIENT_PORTION`
[INFO] [stdout]   --> src/light.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | const AMBIENT_PORTION : f64 = 0.01;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `trace_sample_rays`
[INFO] [stdout]    --> src/light.rs:300:8
[INFO] [stdout]     |
[INFO] [stdout] 300 |     fn trace_sample_rays(&self, scene: &Scene, intersect: &Intersect, num_rays: usize) -> (usize, Vec<Illum>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant is never used: `START_SAMPLE`
[INFO] [stdout]    --> src/light.rs:327:5
[INFO] [stdout]     |
[INFO] [stdout] 327 |     const START_SAMPLE: usize = 32;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant is never used: `PROG_DEPTH`
[INFO] [stdout]    --> src/light.rs:328:5
[INFO] [stdout]     |
[INFO] [stdout] 328 |     const PROG_DEPTH: usize = 4;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant is never used: `PROG_THRESH`
[INFO] [stdout]    --> src/light.rs:329:5
[INFO] [stdout]     |
[INFO] [stdout] 329 |     const PROG_THRESH: f64 = 0.05;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `progressive_random_illumination`
[INFO] [stdout]    --> src/light.rs:331:8
[INFO] [stdout]     |
[INFO] [stdout] 331 |     fn progressive_random_illumination(&self, scene: &Scene, intersect: &Intersect) -> Vec<Illum> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `id`
[INFO] [stdout]   --> src/multithread.rs:71:5
[INFO] [stdout]    |
[INFO] [stdout] 71 |     id: usize,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `image_dimension`
[INFO] [stdout]  --> src/progress_tracker.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     image_dimension: ImageDimension,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `bound_nothing`
[INFO] [stdout]   --> src/mesh.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn bound_nothing() -> BoundingBox {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `expand`
[INFO] [stdout]   --> src/mesh.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn expand(&mut self, vertices: &Vec<DVec3>) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `from_positions`
[INFO] [stdout]   --> src/mesh.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub fn from_positions(positions: Vec<f32>) -> BoundingBox {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `texture_offsets` should have an upper case name
[INFO] [stdout]   --> src/primitive/cube.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 |     const texture_offsets: [(f64, f64); 6] = [(2.0, 1.0), (0.0, 1.0), (1.0, 1.0), (3.0, 1.0), (1.0, 2.0), (1.0, 0.0)];
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `TEXTURE_OFFSETS`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]   --> src/composite_shape.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn merge(A: Vec<(usize, Hit, Intersect)>, B: Vec<(usize, Hit, Intersect)>) -> Vec<(usize, Hit, Intersect)> {
[INFO] [stdout]    |          ^ help: convert the identifier to snake case: `a`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `B` should have a snake case name
[INFO] [stdout]   --> src/composite_shape.rs:33:43
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn merge(A: Vec<(usize, Hit, Intersect)>, B: Vec<(usize, Hit, Intersect)>) -> Vec<(usize, Hit, Intersect)> {
[INFO] [stdout]    |                                           ^ help: convert the identifier to snake case: `b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/mesh.rs:436:17
[INFO] [stdout]     |
[INFO] [stdout] 436 |             let mut v = e1.cross(hit_v1);
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/mesh.rs:439:17
[INFO] [stdout]     |
[INFO] [stdout] 439 |             let mut w = e2.cross(hit_v2);
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/mesh.rs:442:17
[INFO] [stdout]     |
[INFO] [stdout] 442 |             let mut u = e3.cross(hit_v3);
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Enter`
[INFO] [stdout]   --> src/shader/phong.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     Enter,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Exit`
[INFO] [stdout]   --> src/shader/phong.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Exit,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `total_light_blocked`
[INFO] [stdout]   --> src/shader/phong.rs:23:4
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn total_light_blocked(opacity: Color, enter: f64, exit: f64) -> Color {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `AMBIENT_PORTION`
[INFO] [stdout]   --> src/light.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | const AMBIENT_PORTION : f64 = 0.01;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `trace_sample_rays`
[INFO] [stdout]    --> src/light.rs:300:8
[INFO] [stdout]     |
[INFO] [stdout] 300 |     fn trace_sample_rays(&self, scene: &Scene, intersect: &Intersect, num_rays: usize) -> (usize, Vec<Illum>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant is never used: `START_SAMPLE`
[INFO] [stdout]    --> src/light.rs:327:5
[INFO] [stdout]     |
[INFO] [stdout] 327 |     const START_SAMPLE: usize = 32;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant is never used: `PROG_DEPTH`
[INFO] [stdout]    --> src/light.rs:328:5
[INFO] [stdout]     |
[INFO] [stdout] 328 |     const PROG_DEPTH: usize = 4;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant is never used: `PROG_THRESH`
[INFO] [stdout]    --> src/light.rs:329:5
[INFO] [stdout]     |
[INFO] [stdout] 329 |     const PROG_THRESH: f64 = 0.05;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `progressive_random_illumination`
[INFO] [stdout]    --> src/light.rs:331:8
[INFO] [stdout]     |
[INFO] [stdout] 331 |     fn progressive_random_illumination(&self, scene: &Scene, intersect: &Intersect) -> Vec<Illum> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `id`
[INFO] [stdout]   --> src/multithread.rs:71:5
[INFO] [stdout]    |
[INFO] [stdout] 71 |     id: usize,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `image_dimension`
[INFO] [stdout]  --> src/progress_tracker.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     image_dimension: ImageDimension,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `bound_nothing`
[INFO] [stdout]   --> src/mesh.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn bound_nothing() -> BoundingBox {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `expand`
[INFO] [stdout]   --> src/mesh.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn expand(&mut self, vertices: &Vec<DVec3>) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `from_positions`
[INFO] [stdout]   --> src/mesh.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub fn from_positions(positions: Vec<f32>) -> BoundingBox {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `texture_offsets` should have an upper case name
[INFO] [stdout]   --> src/primitive/cube.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 |     const texture_offsets: [(f64, f64); 6] = [(2.0, 1.0), (0.0, 1.0), (1.0, 1.0), (3.0, 1.0), (1.0, 2.0), (1.0, 0.0)];
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `TEXTURE_OFFSETS`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 174 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]   --> src/composite_shape.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn merge(A: Vec<(usize, Hit, Intersect)>, B: Vec<(usize, Hit, Intersect)>) -> Vec<(usize, Hit, Intersect)> {
[INFO] [stdout]    |          ^ help: convert the identifier to snake case: `a`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `B` should have a snake case name
[INFO] [stdout]   --> src/composite_shape.rs:33:43
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn merge(A: Vec<(usize, Hit, Intersect)>, B: Vec<(usize, Hit, Intersect)>) -> Vec<(usize, Hit, Intersect)> {
[INFO] [stdout]    |                                           ^ help: convert the identifier to snake case: `b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 174 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `light3`
[INFO] [stdout]   --> tests/normal_map_test.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn light3() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `light4`
[INFO] [stdout]   --> tests/normal_map_test.rs:20:4
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn light4() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `raytracer::matrix::*`
[INFO] [stdout]  --> tests/dice_scene.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use raytracer::matrix::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `raytracer::matrix::*`
[INFO] [stdout]  --> tests/anti_alias_test.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use raytracer::matrix::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> tests/transparency_test.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `raytracer::matrix::*`
[INFO] [stdout]  --> tests/composite_shape_test.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use raytracer::matrix::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `raytracer::matrix::*`
[INFO] [stdout]  --> tests/scene_test.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use raytracer::matrix::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `light4`
[INFO] [stdout]   --> tests/polyhedra_test.rs:20:4
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn light4() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `make_camera`
[INFO] [stdout]   --> tests/dice_scene.rs:89:4
[INFO] [stdout]    |
[INFO] [stdout] 89 | fn make_camera() -> CameraConfig {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `light1`
[INFO] [stdout]  --> src/main.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn light1() -> Box<PointLight> {
[INFO] [stdout]   |    ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `light2`
[INFO] [stdout]   --> src/main.rs:13:4
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn light2() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `light4`
[INFO] [stdout]   --> src/main.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn light4() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `front_light`
[INFO] [stdout]   --> src/main.rs:25:4
[INFO] [stdout]    |
[INFO] [stdout] 25 | fn front_light() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `square_light`
[INFO] [stdout]   --> src/main.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn square_light(pos: DVec3, size: f64) -> Box<SquareLight> {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> tests/square_light_test.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 5 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> tests/bump_map_test.rs:16:55
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn test_bump_shader(color: Color, normal_map: Box<NormalMappable + Send + Sync>) -> Box<ChainShader> {
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn NormalMappable + Send + Sync`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `raytracer::matrix::*`
[INFO] [stdout]  --> tests/basic_test.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use raytracer::matrix::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> tests/texture_test.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `front_light`
[INFO] [stdout]   --> tests/mesh_test.rs:25:4
[INFO] [stdout]    |
[INFO] [stdout] 25 | fn front_light() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `light1`
[INFO] [stdout]   --> tests/square_light_test.rs:13:4
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn light1() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `light3`
[INFO] [stdout]   --> tests/square_light_test.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn light3() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `light4`
[INFO] [stdout]   --> tests/square_light_test.rs:25:4
[INFO] [stdout]    |
[INFO] [stdout] 25 | fn light4() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `double_subracted_sphere`
[INFO] [stdout]    --> tests/composite_shape_test.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn double_subracted_sphere(size: f64) -> Box<SubtractShape> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 4 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `light1`
[INFO] [stdout]  --> src/main.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn light1() -> Box<PointLight> {
[INFO] [stdout]   |    ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `light2`
[INFO] [stdout]   --> src/main.rs:13:4
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn light2() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `light4`
[INFO] [stdout]   --> src/main.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn light4() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `front_light`
[INFO] [stdout]   --> src/main.rs:25:4
[INFO] [stdout]    |
[INFO] [stdout] 25 | fn front_light() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `square_light`
[INFO] [stdout]   --> src/main.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn square_light(pos: DVec3, size: f64) -> Box<SquareLight> {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 5 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 36.45s
[INFO] running `Command { std: "docker" "inspect" "680211ee295c41508cba20f9b5129ed47ffccc0c1ba39c92278a3f05c9cfbe7c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "680211ee295c41508cba20f9b5129ed47ffccc0c1ba39c92278a3f05c9cfbe7c", kill_on_drop: false }`
[INFO] [stdout] 680211ee295c41508cba20f9b5129ed47ffccc0c1ba39c92278a3f05c9cfbe7c
